package com.wxy;

import static org.mockito.ArgumentMatchers.intThat;

import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.amqp.RabbitProperties.Template;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.format.annotation.DateTimeFormat;

import com.wxy.config.redisConfig2;
import com.wxy.dao.userMapper;
import com.wxy.domain.redisUser;
import com.wxy.domain.user;
import com.wxy.domain.user2;
import com.wxy.service.service;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;

//@Slf4j
@SpringBootTest
public class example{
	private static final Logger LOGGER=LoggerFactory.getLogger(example.class);
	@Autowired
	private userMapper userMapper;
	@Autowired
	private service service;
	@Autowired
	private StringRedisTemplate stringRedisTemplate;
	@Autowired
	private RedisTemplate<String,Object> redisTemplate;
	@Autowired
	private RedisTemplate<String,String> redisTemplate2;
//	@Autowired
//	@Qualifier("redisTemplate2")
//	private RedisTemplate<String,String> redisTemplate2;
//	@Test
//	public void findAll() {
//		System.out.print(this.service.findAll());
//	}
//	@Test
//	public void redisTest() {
//		System.out.println(stringRedisTemplate.opsForValue().get("name"));
//	}
//	@Test
//	public void redisTest2() {
//		System.out.println(stringRedisTemplate.opsForHash().get("user:1","name"));
//	}
//	@Test
//	public void setRedis() throws Exception {
////		redisTemplate2.opsForValue().set("name","张庭豪");
//		user user=new user("张三", "123456",23);
//		ObjectMapper objectMapper =new ObjectMapper();
//		String jsonString=objectMapper.writeValueAsString(user);
//		redisTemplate2.opsForValue().set("user:200",jsonString);
//		String string=(String) redisTemplate.opsForValue().get("user:200");
//		user user2=objectMapper.readValue(string,user.class);
//		System.out.println(user2);
//	}
//	

//	@Test
//	public void test2() {			//使用自定义的redisTempate<String,Object>,可以自动序列化与反序列化实体对象
//		redisTemplate.opsForValue().set("username1","虎哥");
//		redisTemplate.opsForValue().set("user1",new user("lllll","",14));
//		user user=(com.wxy.domain.user) redisTemplate.opsForValue().get("user1");
//		if(user.getPassword().isEmpty())
//			System.out.println("null");
//		System.out.println(redisTemplate.opsForValue().get("username1"));
//	}
//	@Test
//	public void test() {
//		redisTemplate2.opsForValue().set("username1","胡歌");
//		System.out.println(redisTemplate2.opsForValue().get("username1"));
//	}
//	@Test
//	public void test3() {
//		stringRedisTemplate.opsForValue().set("username1","虎哥");
//		System.out.println(stringRedisTemplate.opsForValue().get("username1"));
//		stringRedisTemplate.opsForHash().put("user:2","name1","李四");
//		System.out.println(stringRedisTemplate.opsForHash().get("user:2","name1"));
//	}
//	@Test
//	public void test4() {
//		redisTemplate2.opsForValue().set("你好","瑞迪斯");
//	}
//	@Test
//	public void test5() {
//		redisTemplate.opsForValue().set("你好","瑞迪斯");
//	}
//	@Test
//	public void test6() {
//		LOGGER.info(service.findBanks().toString());
//	}
//	@Test
//	public void test7() {
//		//1.在数据库中查询数据
//		user2 user=userMapper.findById(1);
//		//2.封装为redisUser对象
//		redisUser redisUser=new redisUser(user,LocalDateTime.now().plusMinutes(2));
//		//3.发送给redis
//		stringRedisTemplate.opsForValue().set("user:1",JSONUtil.toJsonStr(redisUser));
//	}
	
	public Long test7() {
		long nowSecond=LocalDateTime.now().toEpochSecond(ZoneOffset.UTC);
		String dateString=LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy:MM:dd"));
		long date=stringRedisTemplate.opsForValue().increment("icr:user:"+dateString);
		return nowSecond<<32|date;
	}
	@Test
	public void test8() {
		ExecutorService executorService=Executors.newFixedThreadPool(3);
		Runnable task=new Runnable() {
			
			@Override
			public void run() {
				// TODO 自动生成的方法存根
				for(int j=1;j<=10;j++) {
					Long longNum=test7();
						System.out.println(",.."+longNum);
				}
			}
		};
		for(int i=0;i<3;i++) {
			executorService.submit(task);
		}
		executorService.shutdown();
	}
}

